<template>
  <div class="app-container">
    <!-- 上传excel的组件 -->
    <upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import UploadExcelComponent from '@/components/UploadExcel/index.vue'
import { reqImportEmployee } from '@/api/employees'
import Enum from '@/constant/employees'
export default {
  name: 'UploadExcel',
  components: { UploadExcelComponent },
  data() {
    return {
    }
  },
  methods: {
    // 上传前 返回 布尔值
    beforeUpload(file) {
      const isLt1M = file.size / 1024 / 1024 < 1

      if (isLt1M) {
        return true
      }

      this.$message({
        message: 'Please do not upload files larger than 1m in size.',
        type: 'warning'
      })
      return false
    },
    // 上传成功后得到表格的数据
    async handleSuccess({ results }) {
      // console.log(results)
      console.log(this.$route.query)
      if (this.$route.query.name === 'user') {
        // 中英对照关系对象
        const rules = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber',
          '部门': 'departmentName',
          '聘用形式': 'formOfEmployment'
        }
        // reqImportEmployee(results) // 不能直接将results携带发送请求 因为这results中的数据对象的键全是中文
        // 1. 遍历results将所有对象的中文键处理成英文
        const newArr = results.map(item => { // item是每一个员工对象, 中文键
          const o = {}
          for (const k in item) {
          // console.log(k) // 中文键
          // console.log(item[k]) // 值
            const englishKey = rules[k] // 英文键
            // 对日期列进行处理
            if (englishKey === 'timeOfEntry' || englishKey === 'correctionTime') {
            // console.log('处理之后赋值', this.formatExcelDate(item[k], '-'))
              o[englishKey] = this.formatExcelDate(item[k], '-')
            // 处理聘用形式 常量数据
            } else if (englishKey === 'formOfEmployment') {
              const obj = Enum.hireType.find(subItem => subItem.value === item[k])
              // console.log(obj)
              obj ? o[englishKey] = obj.id : o[englishKey] = '未知'
            } else {
              o[englishKey] = item[k]
            }
          }
          return o
        })
        // console.log(newArr)
        // 2. 发生请求
        await reqImportEmployee(newArr)
        // 3. 回到员工页面
        this.$router.push('/employees')
      }

      if (this.$route.query.name === 'att') {
        console.log('考勤导入')
      }
    },
    // 处理excel上传时间问题 1900/1/1  计算机是1970/1/1
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>
